﻿using DigDes.DSchool.SUPS.DataAccess.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace DigDes.DSchool.SUPS.DataAccess.FileLoaders
{
    public class Loader : ILoader<FileRow>
    {
        // TODO: Реализовать интерфейс загрузчика и логику проверки типа файла/лоигку загрузки файла

        public bool Check(string filePath)
        {
			try
			{
				if (Path.GetExtension(filePath) != ".OUT" || Path.GetFullPath(filePath) == "")
				{
					System.Console.WriteLine("Неверное имя файла");
					return false; 
				}

				using (StreamReader inFile = new StreamReader(new FileStream(filePath, FileMode.Open, FileAccess.Read),
																System.Text.Encoding.Default))
				{
					if (inFile.ReadLine().Length != 70) { return false; }
				}
			}
			catch (Exception error) { Console.WriteLine(error.Message); } 
			           
			return true;
        }

        public IEnumerable<FileRow> Load(string filePath)
        {
			using (StreamReader inFile = new StreamReader(new FileStream(filePath, FileMode.Open, FileAccess.Read),
															System.Text.Encoding.Default))
			{
				string s;
				int count = 1;
				while ((s = inFile.ReadLine()) != null)
				{
					++count;
					if (s.Length != 70)
					{
						Console.WriteLine("Строка номер " + count + "имеет неверный формат");
						yield return null;
					}
					var row = new FileRow();
					row.set(s);
					yield return row;
				}
			}
        }
    }
}
